package main

import (
	"base/consumer"
	"flag"
	"fmt"
)

// 备注：
//
//	1、根目录下必须存在配置文件否则报错
func main() {

	// 队列名称
	workQueue := flag.String("work", "default", "QueueName")
	flag.StringVar(workQueue, "w", "default", "QueueName")

	//超时时间
	outTime := flag.Int("outTime", 30, "OutTime")
	flag.IntVar(outTime, "o", 30, "OutTime")

	//容错次数
	tries := flag.Int("tries", 3, "ErrorMax")
	flag.IntVar(tries, "t", 3, "ErrorMax")

	// 帮助
	help := flag.Bool("help", false, "显示帮助信息")
	flag.BoolVar(help, "h", false, "显示帮助信息")

	// 解析命令行参数
	flag.Parse()

	// 如果 -h 标志被设置为 true，显示帮助信息
	if *help {
		fmt.Println("-work,-w queueName  队列名称")
		fmt.Println("-outTime,-o outTime  超时时间")
		fmt.Println("-tries,-t  ErrorMax  允许最大容错次数")
		fmt.Println("-help,-h 帮助")
		return
	}

	fmt.Println("消费者启动")
	defer func() { // 必须要先声明defer，否则不能捕获到panic异常
		if err := recover(); err != nil {
			fmt.Println(err) // 这里的err其实就是panic传入的内容
		}
	}()

	consumer.Consume(*workQueue, *tries, *outTime)

}
